bash 您所在的位置:网站首页 curl post params bash

bash

2023-03-23 13:02| 来源: 网络整理| 查看: 265

Я работаю над сценарием оболочки bash, который выполняет вызов API POST в github, чтобы обновить статус запроса на вытягивание с помощью команды curl, ниже приведен сценарий, который я использую

export scan_status='' export status_description='' if[ "$(param.status)" == "Succeeded" ]; then scan_status="success" status_description="scan successful" elif[ "$(param.status)" == "Failed" ]; then scan_status="failure" status_description="scan failed" else scan_status="pending" status_description="scan pending" fi _HTTP_STATUS=$( curl --silent --show-error --insecure \ --connect-timeout 20 --retry 5 --retry-delay 0 --retry-max-time 60 \ --header 'Accept: application/vnd.github.v3+json' \ --header 'Content-Type: application/json' \ --header 'User-Agent: TektonCD, the peaceful cat' \ --header 'Authorization: token '${GITHUB_TOKEN} \ --output ${_OUT_DATA} \ --write-out "%{http_code}\n" \ --data '{"state":"${scan_status}","target_url":"","description":"${status_description}","context":"Checkmarx/$(params.datasource)"}' \ --request POST \ --url "$PR_STATUS_URL" | head -1 ) echo "status:${_HTTP_STATUS}"

Когда я нажимаю это через скрипт, я получаю ошибку 422 при его отладке, я заметил, что параметры scan_status, status_description в разделе данных передаются как «$ {scan_status}» и «$ {status_description}», а не их значения.

Я пробовал передавать их без двойных кавычек, в одинарных кавычках, без фигурных скобок, но ни один из них не работал у меня.

Может кто-нибудь, пожалуйста, помогите мне исправить это

bash shell curl sh 0 Karthik Peddineni 21 Мар 2023 в 19:46 Это потому, что они встроены в строки с одинарными кавычками. Вы должны использовать jq для создания JSON, а не создавать его вручную с использованием интерполяции параметров.  – chepner 21 Мар 2023 в 23:24 2 ответа

Обновить эту строку

--data '{"state":"${scan_status}","target_url":"","description":"${status_description}","context":"Checkmarx/$(params.datasource)"}' \

К

--data "{\"state\":\"${scan_status}\",\"target_url\":\"\",\"description\":\"${status_description}\",\"context\":\"Checkmarx/$(params.datasource)\"}" \

Заметка:

Значения в одинарных кавычках не разрешаются в bash. 0 Shubham Vaishnav 21 Мар 2023 в 21:12

Используя здесь документ, не нужно ничего цитировать в вашем JSON:

curl --silent --show-error --insecure \ --connect-timeout 20 --retry 5 --retry-delay 0 --retry-max-time 60 \ --header 'Accept: application/vnd.github.v3+json' \ --header 'Content-Type: application/json' \ --header 'User-Agent: TektonCD, the peaceful cat' \ --header 'Authorization: token "${GITHUB_TOKEN}" \ --output "${_OUT_DATA}" \ --write-out "%{http_code}\n" \ --url "$PR_STATUS_URL" --data "@/dev/stdin"


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有